/*
 * ListaInvertida.h
 *
 *  Created on: Nov 13, 2013
 *      Author: damian
 */

#ifndef LISTAINVERTIDA_H_
#define LISTAINVERTIDA_H_

#include "../Arbol/ArbolBMas.h"

class ListaInvertida {
private:
	ArbolBMas* indiceInvertido;
	static vector<string> stopWords;  // estatica porque la usan todas las instancias
	unsigned int idBase;

public:
	ListaInvertida(string ruta_archivo, int maxTamanioClave, string ruta_stopwords);
	~ListaInvertida();

	/*
	 * Extrae todos los terminos del 'texto' y asocia a cada uno
	 * con el id del registro de donde proviene el mismo.
	 */
	void extraerTerminos(string texto, int regId);

	/*
	 * Entrega una lista de ids de registros donde aparece el termino buscado.
	 */
	bool buscar(string termino, vector<int>* regIds);

	/*
	 * Se puede configurar el id base de los registros para ocupar menos
	 * espacio en el guardado de los identificadores.
	 */
	void setIdBase(unsigned int idBase);

private:
	void normalizar(string*);
	static bool esStopWord(string);
};

#endif /* LISTAINVERTIDA_H_ */
